// 这里 对 axios 做二次封装
import axios from 'axios'

import store from '@/store'
import router from '@/router'

// 创建axios实例
const ajax = axios.create({
  // 基地址
  baseURL: 'http://toutiao.itheima.net'
})
// 请求拦截器
ajax.interceptors.request.use(config => {
  // console.log(config)// url data headers
  // 在这里可以多请求头的token做统一处理
  // 判断一下，如果vuex中有token，则通过请求头的方式给后台带过去
  if (store.state.user.token) {
    config.headers.Authorization = `Bearer ${store.state.user.token}`
  }
  return config
}, error => {
  return Promise.reject(error)
})
// 响应拦截器
ajax.interceptors.response.use(resp => {
  return resp.data// 这么写，今后组件就可以少写一层.data，
}, error => {
  // token过期，状态码是401表示token过期
  if (error.response.status === 401) {
    // 1. 清空本地的token
    store.commit('user/setToken', '')
    // 2. 跳转到登录页重新登录
    router.replace('/login')
  }
  return Promise.reject(error)
})

// 默认导出，今后哪里需要发请求，只需要默认导入这个ajax函数即可
export default ajax
